/*
 * Copyright (C) 2009 Georgios J. Georgopoulos, All rights reserved.
 * 
 * This is free software; you can redistribute it and/or modify it under the
 * terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 3 of the License, or (at your option) any
 * later version.
 * 
 * This software is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this software; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
 * site: http://www.fsf.org.
 */
package org.gwt.mosaic.xul.client.ui;

import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.ui.Widget;

/**
 * 
 * 
 * @author georgopoulos.georgios(at)gmail.com
 * 
 */
public class Image extends Element {
  private static final long serialVersionUID = 4798518628844517716L;

  private transient com.google.gwt.user.client.ui.Image image = null;

  /**
   * The URL of the content to appear in the element.
   */
  public static final String SRC = "src";

  public Image() {
    super();
  }

  @Override
  protected Widget createUI() {
    if (image == null) {
      image = new com.google.gwt.user.client.ui.Image();
      image.addLoadHandler(new LoadHandler() {
        public void onLoad(LoadEvent event) {
          DeferredCommand.addCommand(new Command() {
            public void execute() {
              layout();
            }
          });
        }
      });
    }

    syncUI(image);

    return image;
  }

  @Override
  protected void syncUI(Widget ui) {
    String src = getSrc();
    if (src != null) {
      image.setUrl(getSrc());
    }
    super.syncUI(ui);
  }

  public String getSrc() {
    return getString(SRC);
  }

  public void setSrc(String value) {
    putString(SRC, value);
  }

}
